home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
MACD 5
/
MACD 5.bin
/
workbench
/
libs
/
intuisup.lha
/
Intuisup
/
Library
/
BenchmarkModula
/
IntuiSupInterface.def
< prev
next >
Wrap
Text File
|
1992-06-20
|
34KB
|
1,080 lines
(*
IntuiSup library interface
Para usar con Modula-2 Software Construction Set
-----------------------------------------------------------------------
por: Mauricio Hunt R.
Apt 856 - 2150, Moravia,
San Jose, Costa Rica
Central America
-----------------------------------------------------------------------
Intuisup library por:
Torsten Jürgeleit
Am Sandberg 4
W-5270 Gummersbach
Germany
Gracias Torsten !
*)
DEFINITION MODULE IntuiSupInterface;
FROM SYSTEM IMPORT ADDRESS, LONGWORD, BYTE;
FROM Intuition IMPORT IDCMPFlags, IDCMPFlagsSet, ImagePtr, ScreenPtr,
WindowPtr, NewWindow, MenuPtr, MenuItemPtr, IntuiMessagePtr,
GadgetPtr;
FROM Text IMPORT TextAttrPtr, TextFontPtr;
FROM DiskFont IMPORT AvailFontsHeaderPtr;
FROM Lists IMPORT ListPtr;
FROM Ports IMPORT MsgPortPtr;
FROM Libraries IMPORT LibraryPtr;
CONST
IntuiSupName = "intuisup.library";
IntuiSupVersion = 4D;
VAR
IntuiSupBase:LibraryPtr;
CONST
(*
para Render.
*)
(* usar esquina sup izq de ventana interna como (0,0) *)
RenderInfoFlagInnerWindow = 1;
(* llenar el fondo de la ventana con otro color *)
RenderInfoFlagBackFill = 2;
(* buscar fonts disponibles y usar esto para IAskfont/IOpenfont *)
RenderInfoFlagAvailFonts = 4;
IntuiSupDataEnd = 0; (* marca el fin del arreglo de datos *)
(*
flags para open window
*)
(* centrar la ventana en la pantalla *)
OpenWindowFlagCenterWindow = 1;
(* usar los pens para render detail y backfill *)
OpenWindowFlagRenderPens = 2;
(* centrar la ventana sobre la posicion actual del pointer *)
OpenWindowFlagCenterMouse = 4;
(*
flags para clear window
*)
(* no cambiar modo de dibujo *)
ClearWindowFlagCustomDrawMode = 1;
(* no cambiar el color de fondo *)
ClearWindowFlagCustomColor = 2;
(* usar el color background normal *)
ClearWindowFlagNormalColor = 4;
(* usar standard raster para el bacground de la ventana *)
ClearWindowFlagUseRaster = 8;
(* no sume el offset del borde de la ventana a la posicion sup.izq dada *)
ClearWindowFlagAbsolutePos = 16;
(* usar el color 1 para el texto *)
ClearWindowFlagText1Color = 32;
(* usar el color 2 para el texto *)
ClearWindowFlagText2Color = 64;
(*
para texto.
*)
TextDataTypeText = 1;
TextDataTypeNumUnsignedDec = 2;
TextDataTypeNumSignedDec = 3;
TextDataTypeNumHex = 4;
TextDataTypeNumBin = 5;
TextDataFlagBold = 1;
TextDataFlagItalic = 2;
TextDataFlagUnderLined = 4;
TextDataFlagAbsolutePos = 8; (* se da la posicion absoluta no offsets *)
TextDataFlagCenter = 16; (* centrar el texto en la ventana *)
TextDataFlagPlaceLeft = 32; (* hacia la izquierda, segun esquina *)
TextDataFlagColor2 = 64; (* usar 2do pen *)
TextDataFlagComplement = 128; (* complementar pens *)
TextDataFlagBackFill = 256; (* usar Jam2 *)
TextDataFlagNoPrint = 512; (* no imprimir texto, solo calcular ancho *)
TextDataFlagNumIdentifier = 1024;(* convertir el numero con identificadores de ensamblador*)
TextDataFlagNumCStyle = 2048;(* usar identificadores de C '0x' para numero hexadecimales *)
TextDataFlagNumLeadingZeroes = 4096; (* convertir numeros con ceros al inicio *)
TextDataFlagNumUpperCase = 8192; (* usar mayuscula para caracteres hexadecimales *)
ConvertFlagIdentifier = 1; (* convertir el numero con identificadores de ensamblador*)
ConvertFlagCStyle = 2; (* usar identificadores de C '0x' para numero hexadecimales *)
ConvertFlagLeadingZeroes = 4; (* convertir numeros con ceros al inicio *)
ConvertFlagUpperCase = 8; (* usar mayuscula para caracteres hexadecimales *)
TYPE
TextDataPtr = POINTER TO TextData;
TextData = RECORD
tdType : CARDINAL;
tdFlags : CARDINAL;
tdLeftEdge : INTEGER;
tdTopEdge : INTEGER;
tdText : ADDRESS;
tdTextAttr : TextAttrPtr;
END;
(*
los bordes.
*)
CONST
BorderDataTypeBox1Out = 1;
BorderDataTypeBox1In = 2;
BorderDataTypeBox2Out = 3;
BorderDataTypeBox2In = 4;
TYPE
BorderDataPtr = POINTER TO BorderData;
BorderData = RECORD
bdType : CARDINAL;
bdLeftEdge : INTEGER;
bdTopEdge : INTEGER;
bdWidth : CARDINAL;
bdHeight : CARDINAL
END;
(*
los gadgets.
*)
TYPE
ID = LONGCARD;
CONST
H = 16777216D; (* x << 24 *)
M = 65536D; (* x << 16 *)
L = 256D; (* x << 8 *)
ISupID = ID('I')*H + ID('S')*M + ID('U')*L + ID('P');
GadgetDataTypeButton = 1; (* button gadget *)
GadgetDataTypeCheck = 2; (* checkmark gadget *)
GadgetDataTypeMx = 3; (* mutual exclude gadget *)
GadgetDataTypeString = 4; (* string input gadget *)
GadgetDataTypeInteger = 5; (* integer input gadget *)
GadgetDataTypeSlider = 6; (* slider gadget *)
GadgetDataTypeScroller = 7; (* scroller gadget *)
GadgetDataTypeCycle = 8; (* cycle gadget *)
GadgetDataTypeCount = 9; (* count gadget *)
GadgetDataTypeListView = 10; (* list view gadget *)
GadgetDataTypePalette = 11; (* palette gadget *)
GadgetDataFlagDisabled = 1D;
GadgetDataFlagNoBorder = 2D;
GadgetDataFlagHighComp = 4D;
GadgetDataFlagOrientationVert = 8D;
GadgetDataFlagHotKey = 16D;
GadgetDataFlagNoTextOutput = 32D;
GadgetDataFlagTextLeft = 64D;
GadgetDataFlagTextRight = 128D;
GadgetDataFlagTextAbove = 256D;
GadgetDataFlagTextBelow = 512D;
GadgetDataFlagTextColor2 = 1024D;
GadgetDataFlagButtonToggle = 2048D;
GadgetDataFlagButtonImage = 4096D;
GadgetDataFlagInputAutoActive = 8192D;
GadgetDataFlagStringUnsignedDec = 16384D;
GadgetDataFlagStringSignedDec = 32768D;
GadgetDataFlagStringHex = 65536D;
GadgetDataFlagStringBin = 131072D;
GadgetDataFlagScrollerNoArrows = 262144D;
GadgetDataFlagCountSignedDec = 524288D;
GadgetDataFlagListViewReadOnly = 1048576D;
GadgetDataFlagListViewShowSelected = 2097152D;
GadgetDataFlagPaletteNoIndicator = 4194304D;
GadgetDataFlagPaletteIndicatorTop = 8388607D;
GadgetDataFlagMovePointer = 16777216D;
GadgetDataFlagNoClear = 33554432D;
GadgetDataFlagSliderImage = 67108864D;
GadgetDataFlagListViewEntryColor = 134217728D;
GadgetDataFlagInputCenter = 268435456D;
GadgetDataFlagInputRight = 536870912D;
GadgetIDCMPFlagsButton = IDCMPFlagsSet{GadgetUp,RawKey};
GadgetIDCMPFlagsCheck = IDCMPFlagsSet{GadgetDown,RawKey};
GadgetIDCMPFlagsMx = IDCMPFlagsSet{GadgetDown,RawKey};
GadgetIDCMPFlagsString = IDCMPFlagsSet{GadgetUp,RawKey};
GadgetIDCMPFlagsInteger = IDCMPFlagsSet{GadgetUp,RawKey};
GadgetIDCMPFlagsSlider = IDCMPFlagsSet{GadgetUp,MouseMove,RawKey};
GadgetIDCMPFlagsScroller = IDCMPFlagsSet{GadgetDown,GadgetUp,MouseMove,
IntuiTicks,RawKey};
GadgetIDCMPFlagsCycle = IDCMPFlagsSet{GadgetUp,RawKey};
GadgetIDCMPFlagsCount = IDCMPFlagsSet{GadgetDown, GadgetUp, MouseMove,
RawKey};
GadgetIDCMPFlagsListView = IDCMPFlagsSet{GadgetDown, GadgetUp, MouseMove,
IntuiTicks,RawKey};
GadgetIDCMPFlagsPalette = IDCMPFlagsSet{GadgetUp,RawKey};
GadgetIDCMPFlagsAll = IDCMPFlagsSet{GadgetDown, GadgetUp, MouseMove,
IntuiTicks, RawKey};
(* se usa en SetGadgetAtributtes *)
UseCurrentValue = 2147483648D; (* 1L << 31 *)
TYPE
DADDRESS = POINTER TO ADDRESS;
GadgetDataPtr = POINTER TO GadgetData;
GadgetData = RECORD
gdType : LONGCARD;
gdFlags : LONGCARD;
gdLeftEdge : CARDINAL;
gdTopEdge : CARDINAL;
gdWidth : CARDINAL;
gdHeight : CARDINAL;
gdText : ADDRESS;
gdTextAttr : TextAttrPtr;
CASE :CARDINAL OF
1 : gdData:RECORD
gdData1 : LONGINT;
gdData2 : LONGINT;
gdData3 : ADDRESS
END |
2: gdButtonData : RECORD
gdButtonSelected : LONGCARD;
gdButtonNormalRender : ImagePtr;
gdButtonSelectRender : ImagePtr
END |
3: gdCheckData : RECORD
gdCheckSelected : LONGCARD;
gdCheckPad1 : LONGCARD;
gdCheckPad2 : LONGCARD
END |
4: gdMXData : RECORD
gdMXSpacing : LONGCARD;
gdMXActiveEntry : LONGCARD;
gdMXTextArray : DADDRESS
END |
5: gdInputData : RECORD
gdInputLen : LONGCARD;
gdInputActiveNext : CARDINAL;
gdInputActivatePrev : CARDINAL;
gdInputDefault : ADDRESS;
END |
6: gdSliderData : RECORD
gdSliderMin : LONGINT;
gdSliderMax : LONGINT;
gdSliderLevel : LONGINT
END |
7: gdScrollerData : RECORD
gdScrollerVisible : LONGCARD;
gdScrollerTotal : LONGCARD;
gdScrollerTop : LONGCARD
END |
8: gdCycleData : RECORD
gdCycleSpacing : LONGCARD;
gdCycleActive : LONGCARD;
gdCycleTextArray : DADDRESS
END |
9: gdCountData : RECORD
gdCountMin : LONGCARD;
gdCountMax : LONGCARD;
gdCountValue : LONGCARD
END |
10: gdListViewData : RECORD
gdListViewSpacing : LONGCARD;
gdListViewTop : LONGCARD;
gdListViewList : ListPtr
END |
11: gdPaletteData : RECORD
gdPaletteDepth : LONGCARD;
gdPaletteColorOffset : LONGCARD;
gdPaletteActiveColor : LONGCARD
END
END (* case *)
END;
(*
para auto request
*)
CONST
AutoReqFlagBackFill = 1;
AutoReqFlagRenderPens = 2;
AutoReqFlagTextCenter = 4;
AutoReqFlagTextColor2 = 8;
AutoReqFlagHotKey = 16;
AutoReqFlagBeep = 32;
AutoReqFlagMovePointerPos = 64;
AutoReqFlagMovePointerNeg = 128;
AutoReqFlagDrawRaster = 256; (* dibujar raster alrededor de area de texro *)
AutoReqFlagCenterMouse = 512;
(*
para requester.
*)
ReqDataFlagBackFill = 1;
ReqDataFlagRenderPens = 2;
ReqDataFlagInnerWindow = 4;
ReqDataFlagAvailFonts = 8;
ReqDataFlagCenterScreen = 16;
ReqDataFlagDragGadget = 32;
ReqDataFlagDepthGadget = 64;
ReqDataFlagDrawRaster = 128; (* dibujar raster alrededor de area de texto *)
ReqDataFlagCenterWindow = 256; (* centrar el requester en la ventana *)
ReqDataFlagCenterMouse = 512; (* centrar el requester sobre la posicion actual de pointer *)
(* estructuras del requester *)
TYPE
RequesterDataPtr = POINTER TO RequesterData;
RequesterData = RECORD
rdLeftEdge: INTEGER;
rdTopEdge : INTEGER;
rdWidth : INTEGER;
rdHeight : INTEGER;
rdFlags : LONGCARD;
rdTitle : ADDRESS;
rdTexts : TextDataPtr;
rdBorders : BorderDataPtr;
rdGadgets : GadgetDataPtr
END;
(*
los menues.
*)
CONST
MenuDataTypeTitle = 1;
MenuDataTypeItem = 2;
MenuDataTypeSubItem = 3;
MenuDataFlagDisabled = 1;
MenuDataFlagAtributte = 2;
MenuDataFlagSelected = 4;
MenuDataFlagEmptyLine = 8;
MenuDataFlagHighNone = 16;
MenuDataFlagHighBox = 32;
MenuDataFlagTextColor2 = 64;
TYPE
MenuDataPtr = POINTER TO MenuData;
MenuData = RECORD
mdType : CARDINAL;
mdFlags : CARDINAL;
mdName : ADDRESS;
mdCommandKey : ADDRESS;
mdMutualExclude : LONGCARD
END;
(*
para Text file.
*)
CONST
TextFileFlagTrimLine = 1;
TextFileFlagSkipComments = 2;
TextFileFlagSkipEmptyLines = 4;
TextFileFlagLineContinuation = 8;
TextFileStatusNormal = 0;
TextFileStatusEOF = 1;
TextFileErrorNoFileData = -1;
TextFileErrorLineTooLong = -2;
TextFileErrorNoCommentEnd = -3;
TextFileErrorReadFailed = -4;
TYPE
FileDataPtr = POINTER TO FileData;
FileData = RECORD
fdLine : ADDRESS;
fdLineLen : INTEGER;
fdLineNum : INTEGER
END;
(*
mouse pointer.
*)
PointerDataPtr = POINTER TO PointerData;
PointerData = RECORD
pdWidth : BYTE;
pdHeight : BYTE;
pdXOffset : BYTE;
pdYOffset : BYTE;
pdData : POINTER TO WORD
END;
PROCEDURE IGetRenderInfo(screen : ScreenPtr; flags : CARDINAL):ADDRESS;
(*
screen - puntero a la pantalla donde el objeto ISUP se debe desplegar o
NIL para usar la pantalla del Workbench.
flags - RenderInfoFlag...
Retorna un puntero a una estructura de datos interna con alguna informa-
cion visual necesaria para la creacion de los objectos ISUP. Use este
MISMO puntero (solo una llamada de IGetRenderInfo para todos los objetos
ISUP desplegados en la misma pantalla) como parametro a las funciones ISUP.
Esta estructura de datos debe ser liberada con la funcion IFreeRenderInfo
ANTES de cerrar la libreria.
*)
PROCEDURE IFreeRenderInfo(ri:ADDRESS);
(*
ri - puntero a una estructura de datos interna retornada por IGetRenderInfo
Libera la memoria reservada por IGetRenderInfo para la estructura de datos
interna.
*)
PROCEDURE IOpenWindow(ri:ADDRESS; nw:NewWindow; flags:CARDINAL):WindowPtr;
(*
ri - puntero a una estructura de datos interna retornada por IGetRenderInfo
nw - puntero a la estructura ya inicializada NewWindow.
flags - OpenWindowFlag...
Manipula la estructura NewWindow de acuerdo a las banderas (flags) dadas
y abre la ventana. Retorna el puntero a la ventana abierta o NIL si no se
pudo.
*)
PROCEDURE IClearRenderWindow(ri:ADDRESS; win:WindowPtr;
leftedge, topedge, width, height,
flags:LONGCARD);
(*
ri - puntero a una estructura de datos interna retornada por IGetRenderInfo
win - puntero a la ventana abierta por IOpenWindow.
leftedge, topedge, width, height - dimensiones y posicion del area a limpiar
flags - ClearWindowFlag...
Limpia el area de la ventana dada de acuerdo a la informacion visual (ri).
El area sera recortada (clipped) a las dimensiones de la ventana si es
necesario.
*)
PROCEDURE ICloseWindow(win:WindowPtr; morewindows:BOOLEAN);
(*
win - puntero a la ventana abierta por IOpenWindow.
morewindows - TRUE si el UserPort^ de la ventana es compartido con otras.
Cierra la ventana de una manera sana (todos los IntuiMessages son respon-
didos, se cierra el UserPort^ solamente si no es compartido.
*)
PROCEDURE IAvailFonts(ri:ADDRESS):AvailFontsHeaderPtr;
(*
ri - puntero a una estructura de datos interna retornada por IGetRenderInfo
Crea una lista de todos los fonts (ROM + Disk) y las deja en la estructura
ri.
*)
PROCEDURE IAskFont(ri:ADDRESS; ta:TextAttrPtr):TextAttrPtr;
(*
ri - puntero a una estructura de datos interna retornada por IGetRenderInfo
ta - punteor a una estructura inicializada con atributos de texto.
Revisa si existe el font dado en la lista interna de fonts (ri ) creada
con IAvailFonts.
*)
PROCEDURE IOpenFont(ri:ADDRESS; ta:TextAttrPtr):TextFontPtr;
(*
ri - puntero a una estructura de datos interna retornada por IGetRenderInfo
ta - puntero a una estructura inicializada con atributos de texto.
Abre el font de acuerdo a la estructura TextAttr dada de la lista interna
en ri.
*)
PROCEDURE IDisplayTexts(ri:ADDRESS; win:WindowPtr; td:TextDataPtr;
hoffset:INTEGER; voffset:INTEGER;
languagetextarray:DADDRESS);
(*
ri - puntero a una estructura de datos interna retornada por IGetRenderInfo
win - puntero a la ventana abierta por IOpenWindow
td - puntero a un arreglo de estructuras TextData inicializadas.
hoffset, voffset - diferencias agregadas a las posiciones de TODO texto.
languagetextarray - puntero a un arreglo de punteros a strings creados con
IBuildLanguageTextArray o NIL.
Despliega el texto descrito en el arreglo dado, Si languagetextarray no
es NIL entonces tdText no contiene un puntero a string si no un offset del
puntero al string en el arreglo con punteros a texto en otros lenguajes.
*)
PROCEDURE IPrintText(ri:ADDRESS; win:WindowPtr; text:ADDRESS;
leftedge, topedge, type:CARDINAL; flags:LONGCARD;
textattr : TextAttrPtr):CARDINAL;
(*
ri - puntero a una estructura de datos interna retornada por IGetRenderInfo
win - puntero a la ventana abierta con IOpenWindow
text - puntero al string con texto
leftedge, topedge - posicion del texto
type - TextDataType...
flags - TextDataFlag...
textattr - font usado para texto
Despliega texto en la posicion dada
*)
PROCEDURE IConvertUnsignedDec(num:LONGCARD; buffer:ADDRESS; flags:CARDINAL):CARDINAL;
(*
num - numero a convertir
buffer - puntero al buffer para el numero convertido
flags - ConvertFlag...
Convierte un numero binario a un string en formato decimal sin signo.
*)
PROCEDURE IConvertSignedDec(num:LONGINT; buffer:ADDRESS; flags:CARDINAL):CARDINAL;
(*
num - numero a convertir
buffer - puntero al buffer para el numero convertido
flags - ConvertFlag...
Convierte un numero binario a un string en formato decimal sin signo.
*)
PROCEDURE IConvertHex(num:LONGCARD; buffer:ADDRESS; flags:CARDINAL):CARDINAL;
(*
num - numero a convertir
buffer - puntero al buffer para el numero convertido
flags - ConvertFlag...
Convierte un numero binario a un string en formato hexadecimal.
*)
PROCEDURE IConvertBin(num:LONGCARD; buffer:ADDRESS; flags:CARDINAL):CARDINAL;
(*
num - numero a convertir
buffer - puntero al buffer para el numero convertido
flags - ConvertFlag...
Convierte un numero binario a un string en formato binario.
*)
PROCEDURE IDisplayBorders(ri:ADDRESS; win:WindowPtr; bd:BorderDataPtr;
hoffset, voffset:INTEGER);
(*
ri - puntero a una estructura de datos interna retornada por IGetRenderInfo
win - puntero a la ventana abierta con IOpenWindow
td - puntero a un arreglo de BorderData inicializado
hoffset, voffset - offset sumado a la posicion de todo borde.
Despliega borders descritos en el arreglo dado.
*)
PROCEDURE IDrawBorder(ri:ADDRESS; win:WindowPtr; leftedge, topedge,
width, height, type:LONGCARD);
(*
ri - puntero a una estructura de datos interna retornada por IGetRenderInfo
win - puntero a la ventana abierta con IOpenWindow
leftedge, topedge, width, height - dimension del borde
type - BorderDataType...
Dibuja un borde en la posicion dada.
*)
PROCEDURE ICreateGadgets(ri:ADDRESS; gd:GadgetDataPtr;
hoffset, voffset:INTEGER;
languagetextarray:DADDRESS):ADDRESS;
(*
ri - puntero a una estructura de datos interna retornada por IGetRenderInfo
gd - puntero al arreglo que contiene las descripciones de GadgetData
hoffset, voffset - offsets sumados a las posiciones de los gadgets
languagetextarray - puntero al arreglos de punteros a strings creados con
IBuildLanguageTextArray o NIL
Crea una estructura de datos interna para los gadgets ISUP dado un arreglo
de estructuras de datos. Esta funcion no despliega ningun objeto. El des-
pliegue se realiza con IDisplayGadgets. La estructura de datos interna DEBE
ser liberada con IFreeGadgets. Si se da un languagetextarray entonces
gdTextArray no contiene un puntero a un string sino que un offset de
punteros de string en el arreglo dado con punteros a texto en otro lenguaje.
*)
PROCEDURE IFreeGadgets(gl:ADDRESS);
(*
gl - puntero a una estructura de datos retornada por ICreateGadgets
Libera la memoria para la estructura de datos reservada con ICreateGadgets
Si los gadgets se estan desplegando entonces debe de ser removidos con
IRemoveGadgets primero.
*)
PROCEDURE IDisplayGadgets(win:WindowPtr; gl:ADDRESS);
(*
win - puntero a la ventana abierta con IOpenWindow
gl - puntero a la estructura de datos retornada por ICreateGadgets
Despliega todos los gadgets dados en la estructura de datos interna
(ahora los gadgets son seleccionables). Para removerlos del depsliegue
se usa IRemoveGadgets (los gadgets ya no seran seleccionables).
*)
PROCEDURE IRefreshGadgets(gl:ADDRESS);
(*
gl - puntero a estructuras de datos retornadas por ICreateGadgets
Refresca las imagenes de todos los gadgets dados en la estructura de
datos interna
*)
PROCEDURE IModifyGadget(gl:ADDRESS; dataentry:CARDINAL; leftedge,
topedge:LONGINT; width, height : LONGCARD);
(*
gl - puntero a la estructura de datos interna retornada por ICreateGadgets
dataentry - offset (en el arreglo de estructuras GadgetData) del gadget a
modificar
leftedge, topedge, width, height - nuevas dimensiones del gadget o usar
UseCurrentValue para no cambiar
Reposiciona y/o cambia el tamano de un gadget. Todos los gadgets pueden ser
movidos pero algunos pueden ser modificados: buttons, sliders y scrollers.
*)
PROCEDURE ISetGadgetAttributes(gl:ADDRESS; dataentry:CARDINAL;
flagmask, flagbits:LONGCARD;
data1, data2:LONGINT; data3:ADDRESS):LONGCARD;
(*
gl - puntero a la estructura de datos interna retornada por ICreateGadgets
dataentry - offset (en el arreglo de estructuras GadgetData) del gadget a
modificar
flagmask - mascara con los bits a poner para los bits a modificar
flagbits - nuevos bits de flags (solor los bits con flag mask encendido
son cambiados)
data1, data2, data3 - nuevos valores paralos apropiados gdSpecialData o usar
UseCurrentValue
Cambia los flags o los datos especiales de un gadget. No todos los miembros
pueden ser cambiados de todos los gadgets. Algunos son fijos al crearse.
*)
PROCEDURE IActivateInputGadget(gl:ADDRESS; dataentry:CARDINAL);
(*
gl - puntero a la estructura de datos interna retornada por ICreateGadgets
dataentry - offset (en el arreglo de estructuras GadgetData) del gadget a
activar
Activa un gadget de entrada: string o integer.
*)
PROCEDURE IGadgetAddress(gl:ADDRESS; dataentry:CARDINAL):GadgetPtr;
(*
gl - puntero a la estructura de datos interna retornada por ICreateGadgets
dataentry - offset (en el arreglo de estructuras GadgetData) del gadget a
obtener un puntero de su estructura Gadget Normal
Retorna un puntero a una estructura Gadget normal.
*)
PROCEDURE IRemoveGadgets(gl:ADDRESS):WindowPtr;
(*
gl - puntero a la estructura de datos interna retornada por ICreateGadgets
Quita todos los gadget pertenecientes a la estructura de datos interna
del despligue (ya no se pueden seleccionar). Se retorna un puntero a la
ventana donde estaban desplegados los gadgets.
*)
PROCEDURE IGetMsg(uport:MsgPortPtr):IntuiMessagePtr;
(*
uport - el UserPort de la ventana
DEBE de ser usado en lugar de GetMsg (de Exec) para el manejo de todas
las acciones de los objetos ISUP. Para todos los eventos producidos por
obbjetos ISUP, un estructura IntuiMessage modificada es retornada, su
campo Class se pone con el valor ISupID y el campo Code contiene el offset
(en el arreglo de las estructuras GadgetData) del gadget apropiado y en
el campo IAddress reside el valor retornado por el gadget. Todas las
estructuras especiales de IntuiMessage DEBEN ser respondidas con IReplyMsg
en lugar de ReplyMsg (de Exec).
Ejemplo:
msg : IntuiMessagePtr;
LOOP
msg := IGetMsg(win^.UserPort);
IF (msg # NIL) THEN
IF (LONGCARD(msg^.Class) = ISupID) THEN
CASE msg^.Code OF
0 : | (* primer objeto *)
1 : | (* segundo objeto *)
END
ELSIF (.... cualquier otro mensaje IDCMP) THEN
END;
IReplyMsg(msg)
END
END; (* loop *)
*)
PROCEDURE IReplyMsg(imsg:IntuiMessagePtr);
(*
imsg - IntuiMessage recibido con IGetMsg
Responde al IntuiMessage creado por IGetMsg, DEBE usarse.
*)
PROCEDURE IConvertRawKeyToASCII(imsg:IntuiMessagePtr);
(*
imsg - IntuiMessage recibido con IGetMsg
Convierte el codigo Raw al correspondiente en la tabla ASCII.
*)
PROCEDURE IAutoRequest(reqwin:WindowPtr; title, bodytext, postext,
negtext:ADDRESS; posidcmpflags,
negidcmpflags:IDCMPFlagsSet; reqflags:CARDINAL;
languagetextarray:DADDRESS):BOOLEAN;
(*
reqwin - puntero a la ventana creado por IOpenIWindow o NIL o NIL para
la ventana del workbench.
title - puntero al titulo de la ventana del requester o NIL para un titulo
default
bodytext - puntero a texto para el cuerpo del requester.
postext - puntero al texto para el gadget positivo o NIL para el texto
default
negtext - puntero al texto para el gadget negativo o NIL para el texto
default
posidcmpflags - IDCMP para la activacion del gadget positivo
negidcmpflags - IDCMP para la activacion del gadget negativo
reqflags - ReqDataFlag...
languagetextarray - puntero al arreglo de puntero a strings creados con
IBuildLanguageTextArray o NIL
Despliega un autorequester segun los datos dados y espera su terminacion
el gadget positivo o negativo. Para el texto del cuerpo del requester se
delinea una nueva linea con '\n'. Si se da un languagetextarray el campo
tdText no contiene un puntero a un string sino un offset del puntero al
arreglo de punteros al texto en otros lenguages.
*)
PROCEDURE IDisplayRequester(reqwin:WindowPtr; rd:RequesterDataPtr;
languagetextarray:DADDRESS):ADDRESS;
(*
reqwin - puntero a la ventana abierta con IOpenWindow o NIL para la
ventana del workbench
rd - puntero a una estructura RequesterData ya inicializada
languagetextarray - puntero al arreglo de puntero a strings creados con
IBuildLanguageTextArray o NIL
Despliega un requester definido por una estructura RequesterData. Todos los
otros gadgets desplegados en la ventana a la que pertenece el requester
(reqwin) son paralizados hasta que se retire el requester. Cualquier
IntuiMessage con Class = ISupID recibidos por IGetMsg vienen del requester
Si se da un languagetextarray el campotdText no contiene un puntero a un
string sino un offset del puntero al arreglo de punteros al texto en otros
lenguages. Se retorna un puntero a la estructura de datos interna. El
requester DEBE ser retirado del despliegue con IRemoveRequester.
*)
PROCEDURE IRemoveRequester(rl:ADDRESS);
(*
rl - puntero a la estructura de datos retornada por IDisplayRequester.
Retira el requester del despliegue. Todos los gadgets antes paralizados
son activables de nuevo.
*)
PROCEDURE ICreateMenu(ri:ADDRESS; win:WindowPtr; md:MenuDataPtr;
ta:TextAttrPtr; languagetextarray:DADDRESS):ADDRESS;
(*
ri - puntero a la estructura retornada por IGetRenderInfo
win - puntero a la ventana abierta por IOpenWindow
md - puntero al arreglo inicializado de estructuras MenuData
ta - puntero a una estructura inicializada con atributos de texto
languagetextarray - puntero a un arreglo de punteros a stringa creados por
IBuildLanguageTextArray o NIL
Crea una estructura de datos interna para un menu de un arreglo de
estructuras de datos dada. Esta funcion NO despliega el menu. El despliegue
se hace con IAtachMenu. Esta estructura DEBE ser liberada con IFreeMenu
Si se da un languagetextarray el campo tdText no contiene un puntero a un
string sino un offset del puntero al arreglo de punteros al texto en otros
lenguages. Se retorna un puntero a la estructura de datos del menu.
*)
PROCEDURE IAttachMenu(win:WindowPtr; ml:ADDRESS);
(*
win - puntero a la ventana abierta con IOpenWindow
ml - puntero a la estructura de datos retornada por ICreateMenu
Hace los menus construidos con ICreateMenu disponible al conectarla a la
ventana, el Menu DEBE ser removido con IRemoveMenu.
*)
PROCEDURE IMenuItemAddress(ml:ADDRESS; menunum:CARDINAL):MenuItemPtr;
(*
ml - puntero a la estructura de datos retornados por ICreateMenu
menunum - offset (en el arreglo de estructuras MenuData) del item para
obtener su direccion
Retorna un puntero a un MenuItem normal.
*)
PROCEDURE IRemoveMenu(ml:ADDRESS):WindowPtr;
(*
ml - puntero a la estructura de datos retornados por ICreateMenu
Retira el menu conectado con IAttachMenu.
*)
PROCEDURE IFreeMenu(ml:ADDRESS);
(*
ml - puntero a la estructura de datos retornados por ICreateMenu
Libera la memoria de la estructura de datos reservada por ICreateMenu
Si el menu aun esta connectad, DEBE de ser removido con IRemoveMenu antes.
*)
PROCEDURE IOpenTextFile(name:ADDRESS; readbuffersize, linebuffersize,
flags:CARDINAL):FileDataPtr;
(*
name - puntero al string con el nombre del archivo
readbuffersize - tamano en bytes del buffer usado para leer el archivo
linebuffersize - numero de bytes usados para la linea mas larga de texto
flags - TextFileFla...
Abre el archivo de texto dado y retorna un puntero a una estructura de
datos con los buffers reservados. Esta estructura DEBE de ser liberada
con ICloseTextFile
*)
PROCEDURE IReadTextLine(fd:FileDataPtr):INTEGER;
(*
fd - puntero a la estructura de datos retornada por IOpenTextFile
Lee la siguiente linea del archivo, esta linea se almecena en la estructura
FileData.
*)
PROCEDURE ICloseTextFile(fd:FileDataPtr);
(*
fd - puntero a la estructura de datos retornada por IOpenTextFile
Cierra el archivo y libera los buffers.
*)
PROCEDURE IBuildLanguageTextArray(name:ADDRESS; entries:CARDINAL):DADDRESS;
(*
name - puntero al string con el nombre del archivo con el texto del
lenguage
entries - numero de entradas de texto en el archivo.
Pasa el texto del archivo a un arreglo de strings. Este arreglo DEBE ser
liberado con IFreeLanguageTextArray.
*)
PROCEDURE IGetLanguageText(text:ADDRESS; textarray:DADDRESS):ADDRESS;
(*
text - offset (en le arreglo de texto) del texto del lenguage
(empezando en 1 no en 0 !!!)
textarray - puntero al arreglo de strings creado por
IBuildLanguageTextArray
Retorna la entrada especificada de dentro del arrglo.
*)
PROCEDURE IFreeLanguageTextArray(textarray:DADDRESS);
(*
textarray - puntero al arreglo de texto creados por IBuilLanguageTextArray
Libera la memoria del arreglo.
*)
PROCEDURE IChangeMousePointer(win:WindowPtr; pd:PointerDataPtr; removegadgets:BOOLEAN);
(*
win - puntero a la ventana creada con IOpenWindow
pd - puntero a una estructura PointerData inicializada o NIL para el
busy pointer.
Reemplaza el pointer del mouse actual se la ventana con el descrito en
en pd. El pointer anterior se guardara y puede ser restaurado con
IRestoreMousePointer.
*)
PROCEDURE IRestoreMousePointer(win:WindowPtr);
(*
win - puntero a la ventana abierta con IOpenWindow
Restaura el pointer anterior de mouse cambiado con IChangeMousePointer
*)
PROCEDURE IMoveMousePointer(win:WindowPtr; x,y:INTEGER; button:BOOLEAN);
(*
win - puntero a la ventana abierta con IOpenWindow
x, y - nueva posicion, relativa a la esquina superior izquierda de
la ventana.
button - TRUE para que le boton izquierdo sea presionado
Mueve el pointer del mouse de una ventana a una nueva posicion.
*)
(* ------------------------- Funciones de apoyo --------------------------*)
PROCEDURE InputAutoActive(next,prev:LONGINT):LONGINT;
PROCEDURE InitIntuiSupLibNoVer():BOOLEAN;
PROCEDURE InitIntuiSupLib():BOOLEAN;
PROCEDURE CloseIntuiSupLib();
END IntuiSupInterface.